{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T18:12:42.789918Z",
     "start_time": "2017-12-01T18:12:42.775994Z"
    }
   },
   "outputs": [],
   "source": [
    "import train_cnn\n",
    "import stacked_ae\n",
    "import utils\n",
    "import matplotlib.pyplot as plt \n",
    "import numpy as np\n",
    "import imp\n",
    "import cv2\n",
    "imp.reload(train_cnn)\n",
    "imp.reload(utils)\n",
    "imp.reload(stacked_ae)\n",
    "%matplotlib inline\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test for CNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Trainset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`models_cnn = {model type : [X, X_fullsize, Y, contour_mask, y_pred, history, model]}`  \n",
    "Training CNN --> it took 2min (simple), 5min (2 convs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T16:59:27.287949Z",
     "start_time": "2017-12-01T16:41:56.394553Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n",
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n",
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n",
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n",
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n"
     ]
    }
   ],
   "source": [
    "variants = ['simple', 'larger', 'deeper', 'maxpooling']\n",
    "models_cnn = {k:train_cnn.run(model=k, history=True) for k in variants}\n",
    "models_cnn['relu'] = train_cnn.run(model='simple', history=True, activation='relu')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:04:22.263895Z",
     "start_time": "2017-12-01T17:04:22.013756Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1b99a61d0>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1b98c41d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,7))\n",
    "for k, v in models_cnn.items():\n",
    "    it = range(len(v[5].history['loss']))\n",
    "    plt.plot(it, v[5].history['loss'], label=k)\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('epochs')\n",
    "plt.title(\"Learning curves\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`models_stackedae = {model type : [X, Y, binarys, model]}`  \n",
    "Training stacked AE --> it took 23s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:06:38.674645Z",
     "start_time": "2017-12-01T17:04:27.569152Z"
    }
   },
   "outputs": [],
   "source": [
    "models_stackedae = {k:stacked_ae.run(v[1], v[4], v[3]) for k,v in models_cnn.items()}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`metrics = {model type : [dice metric, conformity coefficient]}`  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:07:27.797180Z",
     "start_time": "2017-12-01T17:07:27.453931Z"
    }
   },
   "outputs": [],
   "source": [
    "metrics = {k:utils.stats_results(v[1], v[2]) for k,v in models_stackedae.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:07:33.452240Z",
     "start_time": "2017-12-01T17:07:33.443777Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "simple - DM :32.8%, CC :-12.8, Top 5 : [('0.86', 448), ('0.86', 297), ('0.82', 183), ('0.82', 174), ('0.78', 90)]\n",
      "larger - DM :36.9%, CC :-17.0, Top 5 : [('0.83', 262), ('0.83', 327), ('0.83', 117), ('0.83', 484), ('0.82', 389)]\n",
      "deeper - DM :40.4%, CC :-9.7, Top 5 : [('0.87', 43), ('0.87', 81), ('0.87', 206), ('0.87', 290), ('0.86', 315)]\n",
      "maxpooling - DM :39.1%, CC :-14.7, Top 5 : [('0.95', 81), ('0.95', 290), ('0.95', 206), ('0.95', 43), ('0.90', 426)]\n",
      "relu - DM :40.1%, CC :-17.5, Top 5 : [('0.89', 432), ('0.89', 42), ('0.89', 230), ('0.89', 163), ('0.89', 258)]\n"
     ]
    }
   ],
   "source": [
    "for k, v in metrics.items():\n",
    "    print('%s - DM :%.1f%%, CC :%.1f, Top 5 :' % (k, 100*v[0].mean(), v[1].mean()), \n",
    "         list(zip(sorted(map(lambda x:'%.2f' % x, v[0]), reverse=True)[:5], v[0].argsort()[::-1][:5])))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-11-30T14:04:23.167036Z",
     "start_time": "2017-11-30T14:04:23.151838Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>deeper</th>\n",
       "      <th>larger</th>\n",
       "      <th>maxpooling</th>\n",
       "      <th>relu</th>\n",
       "      <th>simple</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>0.652424</td>\n",
       "      <td>0.821918</td>\n",
       "      <td>0.705010</td>\n",
       "      <td>0.647251</td>\n",
       "      <td>0.700455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>428</th>\n",
       "      <td>0.652424</td>\n",
       "      <td>0.821918</td>\n",
       "      <td>0.705010</td>\n",
       "      <td>0.647251</td>\n",
       "      <td>0.700455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>460</th>\n",
       "      <td>0.647059</td>\n",
       "      <td>0.805677</td>\n",
       "      <td>0.883983</td>\n",
       "      <td>0.644723</td>\n",
       "      <td>0.644578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>441</th>\n",
       "      <td>0.647059</td>\n",
       "      <td>0.805677</td>\n",
       "      <td>0.883983</td>\n",
       "      <td>0.644723</td>\n",
       "      <td>0.644578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>433</th>\n",
       "      <td>0.647059</td>\n",
       "      <td>0.805677</td>\n",
       "      <td>0.883983</td>\n",
       "      <td>0.644723</td>\n",
       "      <td>0.644578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>432</th>\n",
       "      <td>0.647059</td>\n",
       "      <td>0.805677</td>\n",
       "      <td>0.883983</td>\n",
       "      <td>0.644723</td>\n",
       "      <td>0.644578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>221</th>\n",
       "      <td>0.759494</td>\n",
       "      <td>0.798122</td>\n",
       "      <td>0.759102</td>\n",
       "      <td>0.842817</td>\n",
       "      <td>0.759713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>223</th>\n",
       "      <td>0.759494</td>\n",
       "      <td>0.798122</td>\n",
       "      <td>0.759102</td>\n",
       "      <td>0.842817</td>\n",
       "      <td>0.759713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>230</th>\n",
       "      <td>0.759494</td>\n",
       "      <td>0.798122</td>\n",
       "      <td>0.759102</td>\n",
       "      <td>0.842817</td>\n",
       "      <td>0.759713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>235</th>\n",
       "      <td>0.759494</td>\n",
       "      <td>0.798122</td>\n",
       "      <td>0.759102</td>\n",
       "      <td>0.842817</td>\n",
       "      <td>0.759713</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       deeper    larger  maxpooling      relu    simple\n",
       "439  0.652424  0.821918    0.705010  0.647251  0.700455\n",
       "428  0.652424  0.821918    0.705010  0.647251  0.700455\n",
       "460  0.647059  0.805677    0.883983  0.644723  0.644578\n",
       "441  0.647059  0.805677    0.883983  0.644723  0.644578\n",
       "433  0.647059  0.805677    0.883983  0.644723  0.644578\n",
       "432  0.647059  0.805677    0.883983  0.644723  0.644578\n",
       "221  0.759494  0.798122    0.759102  0.842817  0.759713\n",
       "223  0.759494  0.798122    0.759102  0.842817  0.759713\n",
       "230  0.759494  0.798122    0.759102  0.842817  0.759713\n",
       "235  0.759494  0.798122    0.759102  0.842817  0.759713"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find the index that maximizes all models\n",
    "dm = {k:v[0] for k,v in metrics.items()}\n",
    "df = pd.DataFrame(dm)\n",
    "df[df>0.6].dropna(how='any').sort_values('larger', ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-11-30T14:04:33.401494Z",
     "start_time": "2017-11-30T14:04:32.844559Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Ground Truth')"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x189a3a8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "idx = 439\n",
    "f, ax = plt.subplots(ncols=len(metrics)+1, figsize=(20,5))\n",
    "for i, (model, v) in enumerate(models_stackedae.items()):\n",
    "    ax[i].imshow(v[2][idx])\n",
    "    ax[i].set_title('%s\\nMean DM: %.2f' % (model, metrics[model][0].mean()))\n",
    "ax[5].imshow(v[1][idx].reshape((64,64)))\n",
    "ax[5].set_title('Ground Truth')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`inference_cnn = {model type : [X_test, X_fullsize_test, Y_test, contour_mask_test, y_pred_test]}`  \n",
    "Inference CNN --> it took 24s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:21:23.775707Z",
     "start_time": "2017-12-01T17:19:35.970821Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n",
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n",
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n",
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n",
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n"
     ]
    }
   ],
   "source": [
    "inference_cnn = {k:train_cnn.inference(v[6]) for k,v in models_cnn.items()}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`inference_sae = {model type : [X_, Y_, binarys_test]}`  \n",
    "Inference Stacked AE --> it took 0.4s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:22:14.514127Z",
     "start_time": "2017-12-01T17:22:12.386493Z"
    }
   },
   "outputs": [],
   "source": [
    "inference_sae = {k:stacked_ae.inference(v[1], v[4], v[3], models_stackedae[k][3]) for k,v in inference_cnn.items()}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`metrics_test = {model type : [dice metric, conformity coefficient]}`  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:22:14.853430Z",
     "start_time": "2017-12-01T17:22:14.515528Z"
    }
   },
   "outputs": [],
   "source": [
    "metrics_test = {k:utils.stats_results(v[1], v[2]) for k,v in inference_sae.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:22:16.568244Z",
     "start_time": "2017-12-01T17:22:16.562590Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "model - DM: Test (Train), CC: Test (Train)\n",
      "simple - DM: 33.6% (32.8%), CC: -9.8 (-12.8)\n",
      "larger - DM: 27.5% (36.9%), CC: -44.6 (-17.0)\n",
      "deeper - DM: 35.3% (40.4%), CC: -11.5 (-9.7)\n",
      "maxpooling - DM: 31.2% (39.1%), CC: -32.2 (-14.7)\n",
      "relu - DM: 27.8% (40.1%), CC: -24.4 (-17.5)\n"
     ]
    }
   ],
   "source": [
    "print('model - DM: Test (Train), CC: Test (Train)')\n",
    "for (k, v), (k1,v1) in zip(metrics_test.items(),metrics.items()):\n",
    "    print('%s - DM: %.1f%% (%.1f%%), CC: %.1f (%.1f)' % (k, 100*v[0].mean(), 100*v1[0].mean(), \n",
    "                                                     v[1].mean(), v1[1].mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T17:23:25.049115Z",
     "start_time": "2017-12-01T17:23:25.033279Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>deeper</th>\n",
       "      <th>larger</th>\n",
       "      <th>maxpooling</th>\n",
       "      <th>relu</th>\n",
       "      <th>simple</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>0.606589</td>\n",
       "      <td>0.699397</td>\n",
       "      <td>0.710306</td>\n",
       "      <td>0.696623</td>\n",
       "      <td>0.682258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>0.606589</td>\n",
       "      <td>0.699397</td>\n",
       "      <td>0.710306</td>\n",
       "      <td>0.696623</td>\n",
       "      <td>0.682258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0.632131</td>\n",
       "      <td>0.631304</td>\n",
       "      <td>0.633247</td>\n",
       "      <td>0.664557</td>\n",
       "      <td>0.618981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>154</th>\n",
       "      <td>0.632131</td>\n",
       "      <td>0.631304</td>\n",
       "      <td>0.633247</td>\n",
       "      <td>0.664557</td>\n",
       "      <td>0.618981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>284</th>\n",
       "      <td>0.632131</td>\n",
       "      <td>0.631304</td>\n",
       "      <td>0.633247</td>\n",
       "      <td>0.664557</td>\n",
       "      <td>0.618981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>313</th>\n",
       "      <td>0.632131</td>\n",
       "      <td>0.631304</td>\n",
       "      <td>0.633247</td>\n",
       "      <td>0.664557</td>\n",
       "      <td>0.618981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>72</th>\n",
       "      <td>0.634911</td>\n",
       "      <td>0.646386</td>\n",
       "      <td>0.644930</td>\n",
       "      <td>0.628872</td>\n",
       "      <td>0.617143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       deeper    larger  maxpooling      relu    simple\n",
       "73   0.606589  0.699397    0.710306  0.696623  0.682258\n",
       "86   0.606589  0.699397    0.710306  0.696623  0.682258\n",
       "26   0.632131  0.631304    0.633247  0.664557  0.618981\n",
       "154  0.632131  0.631304    0.633247  0.664557  0.618981\n",
       "284  0.632131  0.631304    0.633247  0.664557  0.618981\n",
       "313  0.632131  0.631304    0.633247  0.664557  0.618981\n",
       "72   0.634911  0.646386    0.644930  0.628872  0.617143"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find the index that maximizes all models\n",
    "dm = {k:v[0] for k,v in metrics_test.items()}\n",
    "cc = {k:v[1] for k,v in metrics_test.items()}\n",
    "df = pd.DataFrame(dm)\n",
    "df[df>0.6].dropna(how='any').sort_values('simple', ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-01T18:13:25.152275Z",
     "start_time": "2017-12-01T18:13:24.612875Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Ground Truth')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nj6rFllMtrlOb1CKoHlsh1bUIbVOPqsXWSHU9qhZbTrW4Tm1Si6B6bIVU1yK0TT2qFtm6k0BfBi6L\nXbcLwHOAT2zRvldlZgb8NXBzCOFPGp76BPCi+PcX4dc2bpsQwutDCIdDCEfw9/DfQwjPBz4HPCsu\ntu3jBAghnAKOmdkD4kPXAN8mHe9pautRtdh6qsX1aZdaBNVji6S2FqF96lG12DKprUfVYuupFten\nXWoRVI8tktpahPapR9VifeNb1djoacBtwHeBX9uq/TY5tsfjMaobga/HP0/Drw/8LPAd4N+AXds9\n1oYxPxH4ZPz7fYH/Bm4H/h4obvf44riuAr4S39d/BHam5T1Naz2qFlWL2/1eNYyr7Woxjlv1uP5x\npbIW49jarh5Vi51Zj6pF1eJ2v1cN42q7WozjVj2uf1yprMU4trarx26uRYsbFxERERERERGRDqbG\n0CIiIiIiIiIiXUAngUREREREREREuoBOAomIiIiIiIiIdAGdBBIRERERERER6QI6CSQiIiIiIiIi\n0gV0EkhEREREREREpAvoJJCIiIiIiIiISBfQSSARERERERERkS7w/wNOkyUv2uUOMwAAAABJRU5E\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ead86cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "idx = 84\n",
    "f, ax = plt.subplots(ncols=len(metrics_test)+2, figsize=(20,5))\n",
    "for i, (model, v) in enumerate(inference_sae.items()):\n",
    "    ax[i].imshow(v[2][idx])\n",
    "    ax[i].set_title('%s\\nMean DM: %.2f' % (model, metrics_test[model][0].mean()))\n",
    "#     cv2.imwrite('./Rapport/images/results_%s_img%s.png' % (model,idx), v[2][idx]*255)\n",
    "ax[5].imshow(v[1][idx].reshape((64,64)))\n",
    "ax[5].set_title('Ground Truth')\n",
    "\n",
    "ax[6].imshow(v[1][idx].reshape((64,64))*v[0][idx].reshape((64,64)))\n",
    "ax[6].set_title('Ground Truth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T10:28:08.619258Z",
     "start_time": "2017-12-02T10:28:08.489459Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1edebd6a0>"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1edd82a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "i = v[1][idx].reshape((64,64))*v[0][idx].reshape((64,64))\n",
    "plt.imshow(v[0][idx].reshape((64,64)), cmap='gray')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T10:24:33.132720Z",
     "start_time": "2017-12-02T10:24:32.869207Z"
    }
   },
   "source": [
    "## Find contours"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T10:32:44.083509Z",
     "start_time": "2017-12-02T10:32:43.908239Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVcAAADuCAYAAACNg0QRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJztnXd4HdW19t+Z01WtYhXLcpELcm/E\nQCCUSy4lwRASIFwI5EsvNyF5ki/9S0I6IYF7A0m4XFIhEMBcQsC5BAiEFoeOsS1XuUku6pKlU3TK\nzHx/nHPGa5Y0Wzq2ZLX1ex4e5njm7NmzZ7TOXu+stbZmWRYEQRCEkUUf6w4IgiBMRsS4CoIgjAJi\nXAVBEEYBMa6CIAijgBhXQRCEUUCMqyAIwiggxlUQBGEUEOMqCIIwCohxFQRBGAW8uRxcXl5uzZkz\nZ9B9NNMrmUw69kWj0UGPC4VCrm3ourvdp8f19/e7niscDjv2xWIxe9s0zUHbGwpN01z30TZHAnqu\n0cikU13LaGbujdV5c4H3kfZL1f/hPrf8OL/fDwCIx+NIpVLuJxAmDDkZ1zlz5uDll18GAHg8Hse+\nVCplbx86dMixb9OmTfZ2PB63t5cvX+44LpFI2NuFhYWu7VPjvWPHDsdxW7ZssbdffPFF133U0NI+\nAeo/8OwfATDQmNJ2DMOwt/kfEv2sOhcdY34u+ln1B61C9T23Hx9uWI6nH7wN+j06boDzvnu9Xtfj\nVONIvzfcH0D6Hf49vo+eOxgM2tv8b4Q+H/n5+Y59tbW1AIDt27cPq3/C+EfLZaawcuVK68knnwQA\ndHZ2OvYdOXLE3j548KBjHzWA+/fvt7f5g97a2mpv84dvxowZ9nZlZaW9zWe/BQUF9nZLS4tjHzXe\ndF9DQ4PjuH379tnbfX19jn3UuPI/8OEaF9WY031u24Da8NJ+UEOWi0Gi36Pt5TI7p8eqZnsjPZPN\npT23Y1XXyY1mXl6evU2f297eXsdx1LhSIwwARUVFAIC2tjYkEgmZuU4CRHMVBEEYBcS4CoIgjAI5\naa6CIJx8Xn/99Qqv1/srAEshE6LxgglgayqV+uiaNWvaBjsgJ821oqLCuuKKKwAM1CmpvsQ1KaqL\n0vNRrQpwvrzg+iBtg+pkXBujmtesWbMc+6qrqzEYXFdtamqyt3fv3u3Yt3fvXnu7u7vbsY++aKPa\nrEqLVem2w32hxe8hPTcdN/oSj/eXt09f2tD7wlFpum7RDsN9kcb7QfepzsWfP5V27TaOvA03HZu3\nQV/E0vsAOCNbqP4PAD6fD0A6wsUwDMcJ3nrrrUerqqoWTZ8+vVfX9fERTjHFMU1Ta29vL25padm2\nYsWKSwc7Rn4FBWH8s1QM6/hC13Vr+vTpR5H2JgY/5iT2RxCE40MXwzr+yNwTVxuak+ba29uLp556\nCgBQXl7u2LdgwYJjjbI4wGnTptnbNFSKx5fSz9x1zLpN/DjuotGQsGxMbpZTTjnF3l63bp29TcO8\nAKCjo8O1fRrD++qrrzr27dmzx96mIWc8JIz2X+XCctfX7TjeBv0eHbfi4mLHcVVVVfY2v86enp5B\n+9/V1eU4jt4n7gZTqATBz0VlB34tFHpdqlhZnsRCn0f+PbfzqcZUJV3Q8eZ/B/Qzf/azfR4vSRTC\niSMzV0EQhqS5udm7bt26uTNnzly2ZMmSRStXrqy/++67pw39zZGlpqZm2ZEjRxy/WsuXL6+vr69f\nXF1dvaykpGRFfX394vr6+sU7d+50/7VnPProo4VPP/20/cLmsssum3vPPfec0PVJtIAgCEpM08S6\ndevmX3PNNZ2PPfbYPgDYtWuXf/369QOMTzKZdMzeTwabN2/eAQC33XZb2WuvvZZ/9913Nw12XCqV\nGuBNZPnb3/5WWF5enjr//PMjI9UvMa6CMIHQvqOtGY12rW9br7vte+yxxwp9Pp/15S9/uT37bwsX\nLkx84xvfaAPSRu2RRx4piUajumEY2ssvv7zzU5/61MxnnnmmWNM060tf+tKRj33sY90bNmwovOWW\nWyr//ve/NwLA9ddfP+vUU0+N3HDDDZ01NTXLrrrqqs4nnniiOJVKaQ888MDeVatW9be0tHje9773\n1bW2tvrXrFkTzkU2SSaTKC0tXXnllVd2vvjii4W//OUvD1x77bXzGhoaGsrLy42nn346/5vf/GbN\nXXfddeC+++6bruu6dd9995XffvvtBwDgmWeeKbz11lur2tvbfT/84Q+br7/++p6hzknJybjm5+fj\nbW97GwBnCirg1FWp/goAZWVl9jbVq6iuBziLrgQCAcc+GkZEdc+2NmeIWUVFhb1N9V3Amdb6/e9/\n397+t3/7N8dxZ599Ntyg171w4ULHPnrjacjWM8884zjuzTfftLcPHz7s2EfDwuivrKo+AdcRqeZI\n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\no8D/B4+HFF7GdM3wAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1edc83940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from skimage import measure\n",
    "# Find contours at a constant value of 0.8\n",
    "contours_truth = measure.find_contours(v[1][idx].reshape((64,64)), 0.8)\n",
    "contours_simple = measure.find_contours(inference_sae['simple'][2][idx], 0.8)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.imshow(v[0][idx].reshape((64,64)), cmap='gray')\n",
    "\n",
    "for n, contour in enumerate(contours_truth):\n",
    "    ax.plot(contour[:, 1], contour[:, 0], linewidth=2, color='green', label='Ground Truth')\n",
    "for n, contour in enumerate(contours_simple):\n",
    "    ax.plot(contour[:, 1], contour[:, 0], linewidth=2, color='red', label='Prediction')\n",
    "    \n",
    "ax.axis('image')\n",
    "ax.set_xticks([])\n",
    "ax.set_yticks([])\n",
    "plt.legend(bbox_to_anchor=(1,1))\n",
    "plt.savefig('./Rapport/images/image_with_contour_truth_pred.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tests for Stacked AE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:10:06.480246Z",
     "start_time": "2017-12-02T12:08:04.406716Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset shape : (495, 64, 64, 1) (495, 1, 32, 32)\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    _, X_fullsize, _, contour_mask, y_pred, h, m = models_cnn['simple']\n",
    "except:\n",
    "    _, X_fullsize, _, contour_mask, y_pred, h, m = train_cnn.run(model='simple', history=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`models_sae_init = {init type : [X, Y, binarys, model, history]}`   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:11:50.085574Z",
     "start_time": "2017-12-02T12:10:06.481768Z"
    }
   },
   "outputs": [],
   "source": [
    "inits = ['zero', 'random_uniform', 'random_normal']\n",
    "models_sae_init = {k:stacked_ae.run(X_fullsize, y_pred, contour_mask, init_3=k, history=True) for k in inits}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T11:40:41.476082Z",
     "start_time": "2017-12-02T11:40:41.066333Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25409e048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for k, v in models_sae_init.items():\n",
    "    it = range(len(v[4]))\n",
    "    plt.plot(it, v[4], label=k)\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('epochs')\n",
    "plt.title(\"Learning curve\")\n",
    "plt.legend()\n",
    "plt.xlim([0,8])\n",
    "plt.yscale(\"log\", nonposy='clip')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`models_sae_loss = {loss type : [X, Y, binarys, model, history]}`   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:13:32.980968Z",
     "start_time": "2017-12-02T12:11:50.087188Z"
    }
   },
   "outputs": [],
   "source": [
    "loss = [\"customized_loss\", \"MSE\", \"kullback_leibler_divergence\"]\n",
    "models_sae_loss = {'%s + MSE' % l :stacked_ae.run(X_fullsize, y_pred, contour_mask, history=True, \n",
    "                            loss1=l, loss2=l, loss3=\"MSE\") for l in loss}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T11:13:35.106088Z",
     "start_time": "2017-12-02T11:13:34.654532Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20809c390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for k, v in models_sae_loss.items():\n",
    "    it = range(len(v[4]))\n",
    "    plt.plot(it, v[4], label=k.replace('_', ' ').title())\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('epochs')\n",
    "plt.title(\"Learning curve\")\n",
    "plt.legend()\n",
    "plt.xlim([0,8])\n",
    "plt.yscale(\"log\", nonposy='clip')\n",
    "plt.savefig('./Rapport/images/learning_curve_loss_sae.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`metrics = {loss type : [dice metric, conformity coefficient]}`  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:13:33.197352Z",
     "start_time": "2017-12-02T12:13:32.982505Z"
    }
   },
   "outputs": [],
   "source": [
    "metrics_sae_loss = {k:utils.stats_results(v[1], v[2]) for k, v in models_sae_loss.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T11:12:53.366990Z",
     "start_time": "2017-12-02T11:12:53.363183Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "customized_loss + MSE - DM :42.3%, CC :-11.2\n",
      "MSE + MSE - DM :42.1%, CC :-9.6\n",
      "kullback_leibler_divergence + MSE - DM :38.9%, CC :-10.1\n"
     ]
    }
   ],
   "source": [
    "for k, v in metrics_sae_loss.items():\n",
    "    print('%s - DM :%.1f%%, CC :%.1f' % (k, 100*v[0].mean(), v[1].mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-11-30T18:44:42.191624Z",
     "start_time": "2017-11-30T18:44:41.723637Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Ground Truth')"
      ]
     },
     "execution_count": 242,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABIEAAAExCAYAAADrxLITAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XmYdFV57v/vLaOgiIgSEBWNs1HR\n4BSHEI2JGhOSqMQhigYlHjXRozlRM/2M0RzNL8Z5wgmcURxQTowSIvFoFMWAA+KACAEEXzGggIqg\nz/lj75Z6ix6qqmvYXfv7ua6+uqtq166nhn3X6lVrrUpVIUmSJEmSpOV2rUUXIEmSJEmSpNmzE0iS\nJEmSJKkH7ASSJEmSJEnqATuBJEmSJEmSesBOIEmSJEmSpB6wE0iSJEmSJKkH7ASSJEnawpKcneTX\nJ7jewUnOW20/SZ6X5O3TrHP4NqZ9nSQ3TXJZkh3a0ycleeIa2x6QpJLsOE4t4xq+nSQfSXLYLG9T\nkqT12AnUI0lel+Svp7zPxyf55AjbVZJbTvO2JXVT+w/bT5LsPXT+qW0WHNCe3j/J+5JclOT7Sb6c\n5PHtZSv/OF029PMHfa1V0vqq6r+q6jpV9dNF17KWqnpwVR296Dq2kiRHtRl7yND5L23Pf3x7euck\nL0lyXpvBZyd52cD2Zyf50VBOv2rOd0eSFs5OoA4ZtUNlUlX15Kr6u1ntf6vzn0Fpqr4FPGrlRJI7\nArsNbfM24FzgZsANgMcC3xnaZs/2n7qVn2M2uuE2S4/aCrVK2npmPXpoXF2rZxRte+nsMa7ydeBx\nA9ffETgU+ObANs8FDgLuDlwXOBj4z6H9/PZQTj9tgvIlaUuzE0hLzX8GpYV5GwMNduAw4K1D29wN\nOKqqLq+qq6rq1Kr6yNwqvNpWqlVaV5LbJflWkke1p7cbiduOqnjBiLvbNckxSS5N8p9J7jywn+ck\n+WZ72VeS/N5QHU9KcsbA5XfdqNYR79+1Bm77e0nek2Sv9rLVpnj9YpLPJvlBkuNWtl1lv9dL8qYk\nFyQ5P8kLcvW0sscn+VQ78uR7wPPWqW+HJP/YflB0FvBbQ5eflOSJSXZJckmSXxq47IbtSJUbtacf\nmuS0drv/SHKngW3PTvLsJF8ELk+yY5K7th9cXZrkve1z94KB62y0vz9L8sX2A65jkuw6cPkh7XV/\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3b762a908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "idx = 47\n",
    "f, ax = plt.subplots(ncols=len(metrics_sae_loss)+1, figsize=(20,5))\n",
    "for i, (model, v) in enumerate(models_sae_loss.items()):\n",
    "    ax[i].imshow(v[2][idx])\n",
    "    ax[i].set_title('%s\\nMean : %.2f' % (model, metrics_sae_loss[model][0].mean()))\n",
    "ax[3].imshow(v[1][idx].reshape((64,64)))\n",
    "ax[3].set_title('Ground Truth')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:13:54.519787Z",
     "start_time": "2017-12-02T12:13:33.198993Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset shape : (524, 64, 64, 1) (524, 1, 32, 32)\n"
     ]
    }
   ],
   "source": [
    "X_test, X_fullsize_test, Y_test, contour_mask_test, y_pred = train_cnn.inference(models_cnn['simple'][6])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:13:55.795010Z",
     "start_time": "2017-12-02T12:13:54.521392Z"
    }
   },
   "outputs": [],
   "source": [
    "inference_sae_loss = {k:stacked_ae.inference(X_fullsize_test, y_pred, contour_mask_test, v[3]) \n",
    "                          for k,v in models_sae_loss.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:13:56.004721Z",
     "start_time": "2017-12-02T12:13:55.796509Z"
    }
   },
   "outputs": [],
   "source": [
    "metrics_sae_loss_inf = {k:utils.stats_results(v[1], v[2]) for k, v in inference_sae_loss.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:17:14.256132Z",
     "start_time": "2017-12-02T12:17:14.250718Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "model - DM: Test (Train), CC: Test (Train)\n",
      "customized_loss + MSE - DM: 31.8% (41.8%), CC: -13.7 (-10.9)\n",
      "MSE + MSE - DM: 40.0% (37.3%), CC: -11.0 (-14.4)\n",
      "kullback_leibler_divergence + MSE - DM: 23.4% (39.7%), CC: -39.9 (-8.1)\n"
     ]
    }
   ],
   "source": [
    "print('model - DM: Test (Train), CC: Test (Train)')\n",
    "for (k, v), (k1,v1) in zip(metrics_sae_loss_inf.items(),metrics_sae_loss.items()):\n",
    "    print('%s - DM: %.1f%% (%.1f%%), CC: %.1f (%.1f)' % (k, 100*v[0].mean(), 100*v1[0].mean(), \n",
    "                                                     v[1].mean(), v1[1].mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:20:56.791989Z",
     "start_time": "2017-12-02T12:20:56.774173Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MSE + MSE</th>\n",
       "      <th>customized_loss + MSE</th>\n",
       "      <th>kullback_leibler_divergence + MSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>493</th>\n",
       "      <td>0.699399</td>\n",
       "      <td>0.461793</td>\n",
       "      <td>0.696970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>0.699399</td>\n",
       "      <td>0.461793</td>\n",
       "      <td>0.696970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>0.699399</td>\n",
       "      <td>0.461793</td>\n",
       "      <td>0.696970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>0.699399</td>\n",
       "      <td>0.461793</td>\n",
       "      <td>0.696970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>280</th>\n",
       "      <td>0.632911</td>\n",
       "      <td>0.420021</td>\n",
       "      <td>0.682594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>267</th>\n",
       "      <td>0.628308</td>\n",
       "      <td>0.527366</td>\n",
       "      <td>0.417308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>358</th>\n",
       "      <td>0.628308</td>\n",
       "      <td>0.527366</td>\n",
       "      <td>0.417308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>452</th>\n",
       "      <td>0.611787</td>\n",
       "      <td>0.233085</td>\n",
       "      <td>0.691385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>217</th>\n",
       "      <td>0.611787</td>\n",
       "      <td>0.233085</td>\n",
       "      <td>0.691385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>289</th>\n",
       "      <td>0.594107</td>\n",
       "      <td>0.023622</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>0.582143</td>\n",
       "      <td>0.449242</td>\n",
       "      <td>0.343399</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>0.577240</td>\n",
       "      <td>0.415621</td>\n",
       "      <td>0.422091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>0.562644</td>\n",
       "      <td>0.286497</td>\n",
       "      <td>0.330027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>478</th>\n",
       "      <td>0.562644</td>\n",
       "      <td>0.286497</td>\n",
       "      <td>0.330027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>343</th>\n",
       "      <td>0.561495</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.438224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>491</th>\n",
       "      <td>0.561495</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.438224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>329</th>\n",
       "      <td>0.544453</td>\n",
       "      <td>0.249639</td>\n",
       "      <td>0.586441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>464</th>\n",
       "      <td>0.498829</td>\n",
       "      <td>0.158247</td>\n",
       "      <td>0.305158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>487</th>\n",
       "      <td>0.483178</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.537931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>0.483178</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.537931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>431</th>\n",
       "      <td>0.472009</td>\n",
       "      <td>0.192652</td>\n",
       "      <td>0.499419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>423</th>\n",
       "      <td>0.472009</td>\n",
       "      <td>0.192652</td>\n",
       "      <td>0.499419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>243</th>\n",
       "      <td>0.459845</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.272657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>249</th>\n",
       "      <td>0.417601</td>\n",
       "      <td>0.178862</td>\n",
       "      <td>0.471676</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>0.409801</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.074369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>443</th>\n",
       "      <td>0.390977</td>\n",
       "      <td>0.287660</td>\n",
       "      <td>0.305468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>220</th>\n",
       "      <td>0.390977</td>\n",
       "      <td>0.287660</td>\n",
       "      <td>0.305468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>0.386635</td>\n",
       "      <td>0.248086</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>404</th>\n",
       "      <td>0.386635</td>\n",
       "      <td>0.248086</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>0.382918</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.358189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>409</th>\n",
       "      <td>0.340481</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.230735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.338205</td>\n",
       "      <td>0.137872</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>171</th>\n",
       "      <td>0.313043</td>\n",
       "      <td>0.159410</td>\n",
       "      <td>0.171633</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0.292023</td>\n",
       "      <td>0.158423</td>\n",
       "      <td>0.161354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>0.281298</td>\n",
       "      <td>0.155388</td>\n",
       "      <td>0.077468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261</th>\n",
       "      <td>0.256579</td>\n",
       "      <td>0.065962</td>\n",
       "      <td>0.089862</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>0.196588</td>\n",
       "      <td>0.045113</td>\n",
       "      <td>0.201751</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>0.174076</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>173</th>\n",
       "      <td>0.174076</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>347</th>\n",
       "      <td>0.146269</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.080725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>241</th>\n",
       "      <td>0.137300</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.180328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.111667</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.110152</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     MSE + MSE  customized_loss + MSE  kullback_leibler_divergence + MSE\n",
       "493   0.699399               0.461793                           0.696970\n",
       "133   0.699399               0.461793                           0.696970\n",
       "474   0.699399               0.461793                           0.696970\n",
       "141   0.699399               0.461793                           0.696970\n",
       "280   0.632911               0.420021                           0.682594\n",
       "267   0.628308               0.527366                           0.417308\n",
       "358   0.628308               0.527366                           0.417308\n",
       "452   0.611787               0.233085                           0.691385\n",
       "217   0.611787               0.233085                           0.691385\n",
       "289   0.594107               0.023622                           0.000000\n",
       "97    0.582143               0.449242                           0.343399\n",
       "73    0.577240               0.415621                           0.422091\n",
       "142   0.562644               0.286497                           0.330027\n",
       "478   0.562644               0.286497                           0.330027\n",
       "343   0.561495               0.000000                           0.438224\n",
       "491   0.561495               0.000000                           0.438224\n",
       "329   0.544453               0.249639                           0.586441\n",
       "464   0.498829               0.158247                           0.305158\n",
       "487   0.483178               0.000000                           0.537931\n",
       "365   0.483178               0.000000                           0.537931\n",
       "431   0.472009               0.192652                           0.499419\n",
       "423   0.472009               0.192652                           0.499419\n",
       "243   0.459845               0.000000                           0.272657\n",
       "249   0.417601               0.178862                           0.471676\n",
       "151   0.409801               0.000000                           0.074369\n",
       "443   0.390977               0.287660                           0.305468\n",
       "220   0.390977               0.287660                           0.305468\n",
       "65    0.386635               0.248086                           0.000000\n",
       "404   0.386635               0.248086                           0.000000\n",
       "361   0.382918               0.000000                           0.358189\n",
       "409   0.340481               0.000000                           0.230735\n",
       "9     0.338205               0.137872                           0.000000\n",
       "171   0.313043               0.159410                           0.171633\n",
       "14    0.292023               0.158423                           0.161354\n",
       "288   0.281298               0.155388                           0.077468\n",
       "261   0.256579               0.065962                           0.089862\n",
       "143   0.196588               0.045113                           0.201751\n",
       "95    0.174076               0.000000                           0.000000\n",
       "173   0.174076               0.000000                           0.000000\n",
       "347   0.146269               0.000000                           0.080725\n",
       "241   0.137300               0.000000                           0.180328\n",
       "3     0.111667               0.000000                           0.110152"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find the index that maximizes all models\n",
    "dm = {k:v[0] for k,v in metrics_sae_loss.items()}\n",
    "cc = {k:v[1] for k,v in metrics_sae_loss.items()}\n",
    "df = pd.DataFrame(dm)\n",
    "df[df['MSE + MSE'] - df['customized_loss + MSE'] > 0.1].sort_values('MSE + MSE', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:21:47.708919Z",
     "start_time": "2017-12-02T12:21:47.272747Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Ground Truth')"
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABIEAAAExCAYAAADrxLITAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xe4dHV57//3R6qgNFFCEdHYjYrm\nETSWENFYosEkSlSOoqLEoyZ6aU4sifmZRBL1F2Nv2LA3LCAnioQj8dhADIgioogQqo8gKKBS7/PH\nWhvmGXaZmT17z9p7vV/Xta89Zc1a97R71tzr+70nVYUkSZIkSZLWt1vMOgBJkiRJkiStPItAkiRJ\nkiRJPWARSJIkSZIkqQcsAkmSJEmSJPWARSBJkiRJkqQesAgkSZIkSZLUAxaBJEmS1rAk5yR5xAS3\n2y/J+fOtJ8mrknx4mnEOb2Pat0myZ5Irk2zWnj8hybMXWHavJJVk83FiGdfwdpJ8IcnBK7lNSZIW\nYxGoR5K8M8krp7zOZyT56gjLVZI7T3Pbkrqp/cJ2TZKdhy4/pc0Fe7Xn90jy6SSXJPlFku8leUZ7\n3dwXpyuH/v68r7FKWlxV/XdV3aqqrp91LAupqsdU1QdmHcdakuSINsceMHT5G9rLn9Ge3zLJ65Oc\n3+bgc5K8cWD5c5L8eihPv3WV744kzZxFoA4ZtaAyqap6blX900qtf63zy6A0VT8BnjJ3Jsm9gW2G\nlvkQcB5wB+A2wNOAnw4ts0P7pW7u7xNLbbjNpUeshVglrT0rPXpoXF2LZxTt/tI5Y9zkh8DTB26/\nOXAg8OOBZV4ObAD2AW4N7Af819B6Hj+Up18wQfiStKZZBNK65pdBaWY+xMAOO3Aw8MGhZR4AHFFV\nV1XVdVV1SlV9YdUivMlailVaVJJ7JPlJkqe05zcZiduOqnj1iKvbOsknklyR5L+S3HdgPS9L8uP2\nuu8n+ZOhOJ6T5IyB6++/VKwj3r9bDGz70iSfTLJTe918U7x+O8lJSX6Z5Ki5ZedZ7/ZJ3pvkoiQX\nJHl1bppW9owkX2tHnlwKvGqR+DZL8q/tgaKzgT8auv6EJM9OslWSy5P8zsB1t21HqtyuPf+4JKe2\ny309yX0Glj0nyUuTnAZclWTzJPdvD1xdkeRT7XP36oHbLLW+v05yWnuA6xNJth64/oD2tr9sH/tH\nL/W4TdnngYck2bE9/2jgNODigWUeAHy2qi6sxjlVNZzLJan3LAItQ5LbJ/lMkp+1OyJvbS/fZB79\n8E5JuzNxdvsh/ZMkByW5B/BO4EHtyJHL22W3T/LBdhvnJvm7JLcYWM/cTsnl7Tp/r738vCQbMzDv\nfHDHL8nns+lIlRty02iWuyc5LsnPk5yZ5MCBddwmydHtTsBJwG9P8Lgtdp/unOQ/2x2QS5J8or08\n7f3c2G77u4M7TlPkl0FpOr4JbJfmS95mwJOB4f4i3wTeluTJSfZc9Qg3jWOtxCotKE2h5VjgL6vq\nY1NY5QHAp4CdgI8Cn0uyRXvdj4GHAtsD/wB8OMmubRxPoimUPB3YDvhj4NIpxfqXwBOA3wd2Ay4D\n3rbI8k8HngXsClwHvHmB5Y5or78zcD/gD4HBfkL7AmcDuwCHLbK95wCPa9exAXjifAtV1dXAZxg4\n8EQzsuU/q2pjkvsB7wP+guaA07uAo5NsNbD8U2iKTDvQ7NN/tr0fOwEfA24szI24vgNpiit3BO4D\nPKO97T40+0L/q93Ww4Bz2tscweKP27T8BjiKJj9D87wO7599E3hxkucluXeSrEAckrTmWQSaUPtF\n4RjgXGAvYHfg4yPcbluaHZDHVNWtgd8DTq2qM4DnAt9oR47s0N7kLTQ7WHei2eF5OvDMgVXuS3Mk\n5DY0O2gfpylS3Bn4H8Bbk9xqOI6qunE4LPAkmiMpx7fxHdeu63Y0H7ZvT3LP9qZvo/kg3pVmp+pZ\nS93neSx2n/4J+BKwI7BHuyw0OxUPA+7a3vZAhnYop8Qvg9L0zBVVHwmcAVwwdP2TgP8LvBL4SXuU\n+QFDy1zSFrnn/u5hrNK8HgocDTy9qo6Z0jq/XVVHVtW1wL8BWwMPBKiqT7UjLm5oR7v+iGYaDjRF\ngNdV1bfaERlnVdW5U4r1ucDfVtX5bSHlVcATs/CUqA9V1feq6iqa9++BwyNVkuwCPBZ4UXuAZyPw\nBm4qOABcWFVvaQ/+/HqR+A4E3lhV51XVz4F/WWTZjw5t46ntZQCHAu+qqhOr6vq2j9DVtI9/683t\ndn7dXr55e9m1VfUZ4KSBZUdd34Vt3J8H9m4vPwR4X1Ud1z7fF1TVD0Z83Kbpg8DTk+xAs//4uaHr\n/wV4LXAQcDJwQW7ehPtzQ3n6OSsUqyR1lkWgye1DcwTqf7UffL+pqlH7+dwA/E6SW1bVRVV1+nwL\nDRQhXl5VV1TVOcDraaYfzflJVb2/bYL4CeD2wD9W1dVV9SXgGpqC0LyS3BX4AHBgVZ1Hc/TqnHad\n11XVKcCngSe18fwZ8Pftff5ee9uRjXCfrqWZZrXb0GN6Lc387rsDqaozquqicbY9Br8MStPxIZov\nNc/g5kdsqarLquplVXUvmqPrp9LsoA8evd25qnYY+Dtjvg0lefvc+w14O/DUgfffaV2KVVohzwW+\nXlUnTHGd582dqKobgPNp9n1I8vTcNLXocuB3gLmeerdn014t04z1DsBnB7Z7BnA9zfty0ftAc+Bu\ni4E4B9e5BXDRwHrfRXMwbL71LGa3eba5kC8D2yTZN03fwb1pRvPMxfSSwX0Jmsd1twVi2g24oKpq\ngetHWd/g1KpfAXMHERd6Pkd53G6U5KkDy50G7Dm0r7TogbV2n/C2wN8CxwwX49ri1tuq6sE0I5YO\nA943tA/2hKE8/e7FtilJ65FFoMndHji3qq4b50btkag/p9kBuijJ/05y9wUW35nmw3VwB+JcmlFH\ncwZ70fy63cbwZTcbCQTNtCyaobV/N1BsuQOw79BOwkHAb9F88G7O6Ds3k9ynvwECnJTk9CTPau/T\n/wHeSjMSaWOSw5Nst8D98sug1AHtkf+f0Bwp/swSy14C/CvNF5J5e3Yscfvnzb3fgOcBHx14/91n\nhNuvWqzSCnkuzZfqNwxd/is27W33W2Os8/ZzJ9JM294DuDDJHYB3Ay8AbtO+775H8/kNzX7CYtPF\nF4p1FOfRjKYe/IzduqqGD9jc7D4Ae9IcVLpknnVezaaf3du1n/NzitFcNM8259UewPskzbSup9AU\nNq4YiOmwofu5TW06dW4wpouA3Yf2RQbjGGV9C1no+RzlcRu8vzfmZZrpZv89FM9/jxDLh4GXMM/+\n2dC2fl1Vb6OZLnjPxZaVpL6xCDS582h2YOYbfnwVi+xwVdWxVfVImilVP6DZkYKb72Bcwk0jY+bs\nyc1Hpoyt3Zn7KPDlqjp84KrzaOajD34o36qq/ifwM5p53yPt3Cxg0ftUVRdX1XOqajeaeetvT9vQ\nsqreXFW/S/Nhfleauek345dBqVMOAR7eFsA3keS1SX4nTUPTWwP/EzirqlZiquco1lKs0rAraPq5\nPCzJawYuP5XmYMhmaZr5/v4Y6/zdJH/a7uu8iOYL/zeBbWn2WX4GkOSZNCOB5rwH+Oskv5vGndvC\n0VKxjuKdwGFz60vTTPmARZb/H0numWQb4B+BI2voJ+TbkcVfAl6fZLs0zad/O8k4j9WcTwJ/leaX\nRHcEXrbE8h+lOTh4EDdNBYNm3/C57SihJNk2yR+1+Wc+36AZEfWCNk8dwE3T8yZZ36D3As9Msn/7\n2Oye5O5TftxG9WaakdpfGb4iyYuS7Jfklu1jcDDNKPJTVjAeSVpzLAJN7iSaoy6vaT9It07y4Pa6\nU2l2bPZsR9u8fO5GSXZJ8wsL29LsTF1JMz0MmlE9eyTZEjY5QnRYklu3Ozwv5uY9aiZxGM1O3AuH\nLj8GuGuSpyXZov17QJJ7tPF8BnhVkm3S9Akanmu9qKXuU5InJdmjXfwymp3MG9oY9k3TkPIqmr5E\nN9x8C1Pjl0FpCqrqx1V18gJXb0Mz9eFymoard6BpIDvo8mzaxP7FxirNr6oup/mC/Jgk/9Re/ELg\n8TSv3YO4eR+VxRxFU6C4jGba9p9W02/m+zRTub9Bs+9yb+BrA3F8imY/46M0BZ/PMXSgZIFYR/Em\nmn5CX0pyBU1Rat9Flv8QTfPii2l6Gv3VAss9HdgS+D7N/T2S5mDduN5N0/D6OzQ/T77UwaQTafZr\ndgO+MHD5yTRNpt/axnMWbaPmBdZzDfCnNPsvl9P0hTyGZl9z7PUNrfskmt6NbwB+AfwnNx3Mm9bj\nNpKq+nlVHT807W3Or2helxfTHHR8PvBnVXX2wDLDP4zy2XnWI0nrWubPoRpFmrnLb6ZpcFg0I07+\nqr3ubTQ7W5fQNKk7nGYa1G1pmjfv3d7mVOB5VfX9tvjzWeBBwA1VtXN7FOktwKNoCh/vBl5dVXO/\n5vXsqnpIu807Az+qqhuHAic5H3hyVX01zU+ln19Vf5fkHJoRSoPT2f6iqj6S5G40DSD3oSkUfgd4\ncVWdmuS2wPtpmjT/gGZH5w/mYljksSrgLlV11hL36XXt47Y9zY7la6vq8CT70+x83Km9zbFtvFcu\nsd1nAPtV1TMWW65d9hyax/M/hi7fnGb00h2r6pwkb6E5grkrzXS7E2l6Q52RZk7/T2h26Ab9fVX9\n21IxSJIkTUOSE4F3VtX7Zx2LJKk7LAJJkiRJa1w7DetMmgOQB9FMnbtTrdwPaUiS1iCng0mSJGlm\n2unzVy7wN27vwRWX5J0LxPrOGYd2N5rR25fTNE9+ogUgSdIwRwJpKpI8lIG57IOqat5fJ5MkSZIk\nSavHIpAkSZIkSVIPOB1MkiRJkqR1Lsk5SR4xw+2fn2S/WW1fDYtA60T7hr4myc5Dl5+SpNpfreqU\nJE9Ncm6Sq5J8LslOCyy3c5KvJbk0yeVJvpHkwQPXH5zk20l+2SaW17W/6CVpla3nXDR0m6e39+fZ\nA5clyWvbXHVpezqLrUfSyljPuSjJXZMcleRnSX6e5Nj2l13nrn9ykjOT/CLJxiQfSLLd6t0Tqb/a\n99+J7ft4Y3v6eV3fH0jyhYH+Zte2+XNZ/c6SfDjJq6YcqqbAItD68hPgKXNnktwb2GZ24Swsyb2A\ndwFPA3YBfgW8fYHFrwSeBdwW2BF4LfD5gULPNsCLgJ2BfYH9gb9eseAlLWW95qK52+wIvAI4feiq\nQ4EnAPcF7gM8HviLKYcsaXTrNRftABxN0wh6F+Ak4KiB678GPLiqtgfuBGwOvHplIpc0J8lLgDcB\n/z/wWzTvz+cCDwa2XOA2m61agIuoqsdU1a3aXq4fAV43d76qnju8vAfc1zaLQOvLh4CnD5w/GPjg\n4AJJtkryr0n+O8lP21+4uGV73Y5JjmmPLF3Wnt5j4LYnJPmndlTOFUm+NHyEbQwHAZ+vqq9U1ZXA\nK4E/TXLr4QWr6jdVdWZV3QAEuJ6mGLRTe/07qur/VtU1VXUBTeJ68PB6JK2adZmLBvwL8Gaan2Ee\ndDDw+qo6v81FrweeMWFckpZvXeaiqjqpqt5bVT+vqmuBNwB3S3Kb9vrzqmowP10P3HnCuCSNIMn2\nwD8Cz6uqI6vqimqcUlUHVdXV7XJHJHlHkn9PchXwB0m2T/LBNtecm+TvktyiXf5VST48sJ292tGM\nm7fnF81DSZ7WrvPSJH+7jPv3iDQjLF+R5GLg3UmeneSEgWU2b2PbK8nzgD8HXtGOJvrswOrun+S7\naUYrfizJVpPGpclYBFpfvglsl+QebVX5ycCHh5Z5DXBXYG+aHYLdgb9vr7sF8H7gDsCewK+Btw7d\n/qnAM4Hb0VS0Fxxxk2bq1kMWuPpeND9jCkBV/Ri4po1tofWdBvyG5ujXe6pq4wKLPoybH6GXtHrW\nbS5Ksg+wAZhvaPQm62pP32uhuCStuHWbi4Y8DLi4qi4d2NZDkvwCuAL4M+CNI6xH0uQeBGzFpqPy\nFvJU4DDg1sBXgbcAcyP3fp+meP3MMbY9bx5Kck/gHTQjDHcDbgPsscA6RrEHcCuafPi8xRasqrcD\nnwD+uR1N9CcDVx8IPJLm/v5uG59WkcO41p+5o17/CZwBXDB3RZLQTFe4T1X9vL3sn4GPAi9vdx4+\nPbD8YcCXh9b//qr6YXv9J4E/XiiQqtphkThvBfxi6LJf0CTDhdZ3nyRbA3/CwkMqn0XzBe3Z810v\nadWsu1zUfol8O/CCqrohN5/eP7yuXwC3SpLypzilWVl3uWhQOzLpbcCLh7b1VWD7JLsDzwHOWWw9\nkpZtZ+CSqrpu7oIkXwfuSVMcelRVfaW96qiq+lq7zLU0Beq9q+oK4Iokr6cpjLx3xG0vlIeeCBwz\nt90krwResIz7eB3wqqq6pl3fpOt5Y1Vd3K7jGJoivFaRRaD150PAV4A7MjTkmaanzjbAtwfetAE2\nA0iyDc2Q4kfTTLcCuHWSzarq+vb8xQPr+xXNTsskrgSGmxRuR3PEakFV9RvgY0nOSHJqVd141CzJ\nE2imaTxiaBi0pNW3HnPR84DTquqbI65rO+BKC0DSTK3HXEQb322BLwFvr6qPzbdMVV2Q5IvAx4H7\nTxibpKVdCuycZPO5QlBV/R40v4jFpjNwzhs4vTOwBXDuwGXn0oxKHNVCeWi3wW1V1VVJLmVyP50r\nAC3TcLxL/iCHpsvpYOtMVZ1L0wjxscBnhq6+hGYo872qaof2b/u2ARjAS2iaDO5bVdvRDC+GZodo\n2k6naZ7abCC5E02V/Icj3n4LmiGEc7d/NPBu4PFV9d0pxilpAus0F+0P/EmSi9v58L8HvD7J3PSQ\nTdbVnnZqqjRD6zQXzTWo/xJwdFUdtsS6Nwd+e0pxSprfN4CrgQNGWHbw4NAlwLU0007n7MlNoxav\nYtOG9r81RkwXAbefO9MWtm8zxu2HDR/UWio2D4J1lEWg9ekQ4OFVddXghW1j5XcDb0hyO4Akuyd5\nVLvIrWl2hi5P87Ok/98KxvgR4PFJHppkW5pGap9ph0FuIskD27ntWya5ZZKX0nTbP7G9/uHt+v6s\nqk5awZgljWdd5SKaJs/3oBm2vDdwMvAPwFyjxQ8CL27vy240XyCPWMHYJY1mXeWiND/3fizwtap6\n2TzXH5Rkz/b0HWh6jxy/grFLvVdVl9PsE7w9yROT3DrJLZLsDWy7yO2uBz4JHNbe5g400zvn+ped\nCjwsyZ5pmk+/fIywjgQeN/c9iiavTPP7/3eA+yS5d5qG+sM58qcMHLRXd1gEWoeq6sdVdfICV78U\nOAv4ZpJfAv9Bc5QLmqaBt6SpSH8T+OJy4mg7wT90gRhPp/nJxI8AG2l2tJ43cNsvJHlFe3Yrmvnu\nl9JUxR8L/FFVXdhe/0qaZmr/3m7zyiRfWE7skpZvveWiqrq8qi6e+6Np2vrLqprr4/Eu4PPAd4Hv\nAf+7vUzSDK23XETTG/EBwDMH9nuunCv80PQg+XqaXx76GnAmTV8gSSuoql5HU8D5G5oCyE9p9gNe\nCnx9kZv+Jc2omrNpGkV/FHhfu87jaBosnwZ8GzhmjHhOB57fru8i4DLg/HHu0xLr/z7wz8AJNHnm\nK0OLvAe4b5pfVzxyWtvV8sVWBZIkSZIkSeufI4EkSZIkSZJ6wCKQJEmSJElSD1gEkiRJkiRJ6oFl\nFYGSPDrJmUnOSnKzXyeQpNVgLpLUBeYiSV1hPpK0kIkbQyfZDPgh8EiaLuPfAp7SdgmXpFVhLpLU\nBeYiSV1hPpK0mM2Xcdt9gLOq6myAJB8HDgAWTC5bZqvamm2XsUlJs/YbruKaujqzjmOAuUjqqSu4\n7JKquu2s42iZi6Se6lgugjHzkblIWh9GzUXLKQLtDpw3cP58YN/FbrA127Jv9l/GJiXN2ol1/KxD\nGGYuknrqP+rIc2cdwwBzkdRTHctFMGY+MhdJ68OouWg5RaCRJDkUOBRga7ZZ6c1J0rzMRZK6wFwk\nqQvMRVJ/Lacx9AXA7QfO79FetomqOryqNlTVhi3Yahmbk6R5mYskdYG5SFJXLJmPzEVSfy2nCPQt\n4C5J7phkS+DJwNHTCUuSRmYuktQF5iJJXWE+krSgiaeDVdV1SV4AHAtsBryvqk6fWmSSNAJzkaQu\nMBdJ6grzkaTFLKsnUFX9O/DvU4pFkiZiLpLUBeYiSV1hPpK0kOVMB5MkSZIkSdIaYRFIkiRJkiSp\nBywCSZIkSZIk9YBFIEmSJEmSpB6wCCRJkiRJktQDFoEkSZIkSZJ6wCKQJEmSJElSD1gEkiRJkiRJ\n6gGLQJIkSZIkST1gEUiSJEmSJKkHLAJJkiRJkiT1gEUgSZIkSZKkHrAIJEmSJEmS1AMWgSRJkiRJ\nknrAIpAkSZIkSVIPWASSJEmSJEnqAYtAkiRJkiRJPWARSJIkSZIkqQcsAkmSJEmSJPWARSBJkiRJ\nkqQe2HzWAagbjr3w1Kms51G77T2V9Ujqp2nlomHmJkmSJMmRQJIkSZIkSb1gEUiSJEmSJKkHnA62\nhqzUNIlpmmaMTt+Q1p6u5ilzk7T+dDXfmCMkSV3mSCBJkiRJkqQesAgkSZIkSZLUAxaBJEmSJEmS\nesCeQKusq/PXu2ipx8o599LKWKt5apycsJz7OO5tzVXSwhZ7Py313unqe2ucHNHV+yBJWr8cCSRJ\nkiRJktQDSxaBkrwvycYk3xu4bKckxyX5Uft/x5UNU1LfmYskdYX5SFIXmIskTWKUkUBHAI8euuxl\nwPFVdRfg+Pa8JK2kIzAXSeqGIzAfSZq9IzAXSRrTkj2BquorSfYauvgAYL/29AeAE4CXTjGudWOt\n9tZYC4YfW+fVr2/mopWzXvLUerkf6j7z0eSW0wNorRi8H0vlJfsfajnMRf2ynP0cc4kGTdoTaJeq\nuqg9fTGwy5TikaRxmIskdYX5SFIXmIskLWrZjaGrqoBa6PokhyY5OcnJ13L1cjcnSfMyF0nqisXy\nkblI0moxF0maz6RFoJ8m2RWg/b9xoQWr6vCq2lBVG7Zgqwk3J0nzMhdJ6oqR8pG5SNIKMxdJWtSS\nPYEWcDRwMPCa9v9RU4tojbMnxezYI6iXzEUjWk4fDvPapoYfr+X0/DBPrSvmo3n0/bN53Ps7/HiZ\nPzQBc9Easlr7WMvdjvlmfRnlJ+I/BnwDuFuS85McQpNUHpnkR8Aj2vOStGLMRZK6wnwkqQvMRZIm\nMcqvgz1lgav2n3IskrQgc5GkrjAfSeoCc5GkSSy7MbQkSZIkSZK6b9KeQGrZK0PSWuBc7ukZt8eJ\nnxPqE1/vyzNOz7G+91uS1qK1miMH4zbXrH2OBJIkSZIkSeoBi0CSJEmSJEk94HSwMa3VIXx95M+q\nqk+Wyk2LvebNa8szzmM/zs8/D99W6iKnJK0sH09p7Vnv+1Xuu6x9jgSSJEmSJEnqAYtAkiRJkiRJ\nPWARSJIkSZIkqQfsCTSC9T6vU9La43zstWOcn1X180ZrgT8VLKnP/KxenL3ius+RQJIkSZIkST1g\nEUiSJEmSJKkHLAJJkiRJkiT1gD2B5uE8z/XPuapaixbLTeO+hs1zs2EvJ61FfmZK6hP3kabLz5Du\ncSSQJEmSJElSD1gEkiRJkiRJ6gGLQJIkSZIkST1gTyAJ56qqm5bTA8j57GvTOLnIvKXV4mtL0nrj\nfpL6zJFAkiRJkiRJPWARSJIkSZIkqQcsAkmSJEmSJPWAPYFwTqiktc88pqVeA/Z10ajsNyVpvXE/\nqTsGnws/X2bDkUCSJEmSJEk9YBFIkiRJkiSpB3o5HczhgJLWOvNYPyz2PA8PoV7qNTHOutQv5hNJ\na515bG1y+vFsOBJIkiRJkiSpBywCSZIkSZIk9YBFIEmSJEmSpB7oZU8gSeoi57NrHEvNox/n9eTP\ny2uQz7ektcD9JmkyjgSSJEmSJEnqgSWLQElun+TLSb6f5PQkL2wv3ynJcUl+1P7fceXDldRX5iJJ\nXWAuktQF5iJJkxplJNB1wEuq6p7AA4HnJ7kn8DLg+Kq6C3B8e16SVoq5SFIXmIskdYG5SNJEluwJ\nVFUXARe1p69IcgawO3AAsF+72AeAE4CXrkiU0ipbqteGVt96zEXOZddKWk6PIC1sPeYiSWtPH3OR\nn2PSdIzVEyjJXsD9gBOBXdrkA3AxsMtUI5OkBZiLJHWBuUhSF5iLJI1j5CJQklsBnwZeVFW/HLyu\nqgqoBW53aJKTk5x8LVcvK1hJMhdJ6gJzkaQuMBdJGtdIRaAkW9Akl49U1Wfai3+aZNf2+l2BjfPd\ntqoOr6oNVbVhC7aaRsySespcJKkLzEWSusBcJGkSS/YEShLgvcAZVfVvA1cdDRwMvKb9f9SKRChJ\n9DMXLdaLynnxWk32SbtJH3ORpO4xF0ma1JJFIODBwNOA7yaZ2wt8BU1i+WSSQ4BzgQNXJkRJAsxF\nkrrBXCSpC8xFkiYyyq+DfRXIAlfvP91wJGl+5iJJXWAuktQF5iJJkxrr18EkSZIkSZK0No0yHWzN\ns3eGlmvwNdSlXhhdjUuj8TnTWrXY56qv6+6zx5OkLvI7m/x8Wh2OBJIkSZIkSeoBi0CSJEmSJEk9\n0IvpYNI0OUxRs+IwaS3HcK7y9SRJktQ/jgSSJEmSJEnqAYtAkiRJkiRJPWARSJIkSZIkqQfWbU8g\nex1otcyyR9DgtuxVtPaYpzRNXckBXYlDkiRJN+dIIEmSJEmSpB6wCCRJkiRJktQDFoEkSZIkSZJ6\nYN30BLK3hrpiVv0whrdjX47uMU9pNS2VAxbLCdN8rZqLusfnQFIXuF8kzYYjgSRJkiRJknrAIpAk\nSZIkSVIPWASSJEmSJEnqgXXTE0jqKvth9Jvz3dUV4+SipXqMSZIkaW1yJJAkSZIkSVIPWASSJEmS\nJEnqAYtAkiRJkiRJPbBmewLZn0Br1eBrdyX7A9l7aDbMTVorxslF9giSJE2Dnx/S7DkSSJIkSZIk\nqQcsAkmSJEmSJPXAmpkO5tBBrUer+fPx/lS9pC4wF0mSJM2OI4EkSZIkSZJ6wCKQJEmSJElSD1gE\nkiRJkiRJ6oHO9gSyB5D6yF4Za4+5SmvVcvKLPxkvSRqFnw9S9zgSSJIkSZIkqQeWLAIl2TrJSUm+\nk+T0JP/QXn7HJCcmOSvJJ5IYbkSBAAASi0lEQVRsufLhSuorc5GkLjAXSeoCc5GkSY0yEuhq4OFV\ndV9gb+DRSR4IvBZ4Q1XdGbgMOGTlwpQkc5GkTjAXSeoCc5GkiSxZBKrGle3ZLdq/Ah4OHNle/gHg\nCSsSoSTRnVx07IWnbvInqV+6kosk9Zu5SNKkRuoJlGSzJKcCG4HjgB8Dl1fVde0i5wO7r0yIktQw\nF0nqAnORpC4wF0maxEhFoKq6vqr2BvYA9gHuPuoGkhya5OQkJ1/L1ROGKUnmIkndYC6S1AXmIkmT\nGOvXwarqcuDLwIOAHZLM/cT8HsAFC9zm8KraUFUbtmCrZQUrSWAuktQN5iJJXWAukjSOzZdaIMlt\ngWur6vIktwQeSdNw7MvAE4GPAwcDRy03GPtrSFrIauYiSVqIuUhSF5iLtB49are9Zx1CLyxZBAJ2\nBT6QZDOakUOfrKpjknwf+HiSVwOnAO9dwTglyVwkqQvMRZK6wFwkaSJLFoGq6jTgfvNcfjbN3FNJ\nWnHmIkldYC6S1AXmIkmTGmUk0Ipx+pe0uKXeIw6ZlLSQ1cwPg9vys12SJKm7xmoMLUmSJEmSpLXJ\nIpAkSZIkSVIPWASSJEmSJEnqgZn2BJIkSatjsV499heTJEnqB0cCSZIkSZIk9YBFIEmSJEmSpB6w\nCCRJkiRJktQDq9oT6K73+RXHHrtwTwJJ6prF+qhIkiTpJu43Sd3nSCBJkiRJkqQesAgkSZIkSZLU\nAxaBJEmSJEmSesAikCRJkiRJUg9YBJIkSZIkSeoBi0CSJEmSJEk9YBFIkiRJkiSpBzafdQCStJ49\nare9bzx97IWnzjAS9Y2vN0mS1GWD+8laPY4EkiRJkiRJ6gGLQJIkSZIkST3gdDBJktah4SHWw9PD\nHIItSZLUP44EkiRJkiRJ6gGLQJIkSZIkST1gEUiSJEmSJKkH7Akk9YT9P1aHj7NmZZavvXF+jt73\niCRJ/eV+wOw5EkiSJEmSJKkHLAJJkiRJkiT1gEUgSZIkSZKkHrAnkLSGOIdW0rQM9vExt0iSJPWD\nI4EkSZIkSZJ6YOQiUJLNkpyS5Jj2/B2TnJjkrCSfSLLlyoUpSQ1zkaQuMBdJ6gJzkaRxjTMS6IXA\nGQPnXwu8oaruDFwGHDLNwCRpAeYiSV1gLpLUBeYiSWMZqQiUZA/gj4D3tOcDPBw4sl3kA8ATViJA\nSZM59sJTN/lbD8xF0ujWYw7oCnORpC4wF0maxKgjgd4I/A1wQ3v+NsDlVXVde/58YPcpxyZJw8xF\nkrrAXCSpC8xFksa2ZBEoyeOAjVX17Uk2kOTQJCcnOflnl14/ySokaaq56FqunnJ0kvrCXCSpC8xF\nkiY1yk/EPxj44ySPBbYGtgPeBOyQZPO20rwHcMF8N66qw4HDATbcd+uaStSS+mhquWi77GQukjQp\nc5GkLjAXSZrIkkWgqno58HKAJPsBf11VByX5FPBE4OPAwcBRKxin1EuP2m3vmdy2i9ZDLhp+TuzT\nouVY7utpOTlinG2ZiyRp+sxFkiY1zq+DDXsp8OIkZ9HMP33vdEKSpLGYiyR1gblIUheYiyQtapTp\nYDeqqhOAE9rTZwP7TD8kSVqcuUhSF5iLJHWBuUjSOMYqAknqruHpGettCoakxa3kdEOnLkqSpEn4\nnaR7ljMdTJIkSZIkSWuERSBJkiRJkqQesAgkSZIkSZLUA/YEkmZomnNknW+7Msbts9LV3kz+PL1W\n67XYlde8JEmSbs6RQJIkSZIkST1gEUiSJEmSJKkHLAJJkiRJkiT1gD2BpDVssK+LfTi0GHsAaRy+\nXiRJktYnRwJJkiRJkiT1gEUgSZIkSZKkHrAIJEmSJEmS1AP2BJJW2Er26rEPkLS+Lec9Ps5tl9sD\nyFwkSYKbfx7YY65/3CfoPkcCSZIkSZIk9YBFIEmSJEmSpB6wCCRJkiRJktQD9gSSpmwl58EOz6t2\nzm33DT5nw8+X8+Y1S77eJEnScvl9ZO1xJJAkSZIkSVIPWASSJEmSJEnqAaeDScu0mkMgHW45eys5\nhWs11z1NTiua3Fp5Xsw9kqRJOPVd6h5HAkmSJEmSJPWARSBJkiRJkqQesAgkSZIkSZLUA6vaE+iH\np22zybxQ54RqLZpmb4yl3gP24ei+rvQIWmrZ4fPj5OKlXofjvE7N++NZzvMmSVLX+Dm2NvmdZH1x\nJJAkSZIkSVIPWASSJEmSJEnqAYtAkiRJkiRJPbCqPYGGrWQvDamrBl/nzq/tl8X6u4xisXn04+bP\nWeXbpe7zevgcmOZn22rlCHORJGm1+V1Qmg1HAkmSJEmSJPXASCOBkpwDXAFcD1xXVRuS7AR8AtgL\nOAc4sKouW5kwJclcJKkbzEWSusBcJGkS44wE+oOq2ruqNrTnXwYcX1V3AY5vz0vSSjMXSeoCc5Gk\nLjAXSRrLcnoCHQDs157+AHAC8NJlxiN1wnL6Yyw1n9neG1PXqVy02PM7zbnuy+2ts1h/oeWsa9zb\nLieutWIl88lymIumrlO5SFJvrdlc1Ie+gV3lPkG/jDoSqIAvJfl2kkPby3apqova0xcDu0w9Okna\nlLlIUheYiyR1gblI0thGHQn0kKq6IMntgOOS/GDwyqqqJDXfDduEdCjA1myzrGAl9Z65SFIXmIsk\ndYG5SNLYRhoJVFUXtP83Ap8F9gF+mmRXgPb/xgVue3hVbaiqDVuw1XSiltRL5iJJXWAuktQF5iJJ\nk1hyJFCSbYFbVNUV7ek/BP4ROBo4GHhN+/+olQxUWkn2AOq+9ZiLVvK1M3zb4W1Nc179Sq1rqfuw\nHNPsOzDO8zTLfgbmoulYj7lI0trTx1y0Wn0X+8B9gn4bZTrYLsBnk8wt/9Gq+mKSbwGfTHIIcC5w\n4MqFKUnmIkmdYC6S1AXmIkkTWbIIVFVnA/ed5/JLgf1XIihJGmYuktQF5iJJXWAukjSp5fxE/NQ5\nxE+rZdwhkItNUXE4pUY17vSm4eunOT1sHCs1NWolLXe612I/Vb+c/DFNXXmsJUmata58NneJ+wla\nyKg/ES9JkiRJkqQ1zCKQJEmSJElSD1gEkiRJkiRJ6oFO9QSSZmWpnh/OqdVKGLdvzWK9qZay2Nz3\npdY1Ti+jafYxWiqOxbY97lz/xdY9y/e/uUeSpOlbi71o3SfQtDgSSJIkSZIkqQcsAkmSJEmSJPWA\nRSBJkiRJkqQeWDM9gcbtnSENGrfnidQF05yvvpK9eRbrVbSSPYKWiqsruhqXpPVtNfOvtJ74XtF6\n50ggSZIkSZKkHrAIJEmSJEmS1AMWgSRJkiRJknpgzfQEksblfF6tZ0v13hm22PXLfa8sdvtx172S\ncUpSn5gzJUnzcSSQJEmSJElSD1gEkiRJkiRJ6gGLQJIkSZIkST2wbnoCLTbvealeGVofnPuuPlvO\n679LOdL3sSTNb6lcbf6UJI3CkUCSJEmSJEk9YBFIkiRJkiSpB9bNdLDFTPMnijU7DnOWVobvLUnq\nPnO1JGkaHAkkSZIkSZLUAxaBJEmSJEmSesAikCRJkiRJUg/0oieQ1ibnvkuSJEmSND2OBJIkSZIk\nSeoBi0CSJEmSJEk9YBFIkiRJkiSpB+wJNI/l9KI59sJTpxjJ+mOfH0mSJEmSZsORQJIkSZIkST0w\nUhEoyQ5JjkzygyRnJHlQkp2SHJfkR+3/HVc6WEn9Zi6S1AXmIkldYC6SNIlRRwK9CfhiVd0duC9w\nBvAy4PiqugtwfHteklaSuUhSF5iLJHWBuUjS2JbsCZRke+BhwDMAquoa4JokBwD7tYt9ADgBeOlK\nBLmWLNXzZj32DLLPj1aDuUhSF5iLJHWBuUjSpEYZCXRH4GfA+5OckuQ9SbYFdqmqi9plLgZ2Wakg\nJQlzkaRuMBdJ6gJzkaSJjFIE2hy4P/COqrofcBVDwwqrqoCa78ZJDk1ycpKTr+Xq5cYrqb/MRZK6\nwFwkqQvMRZImMkoR6Hzg/Ko6sT1/JE3C+WmSXQHa/xvnu3FVHV5VG6pqwxZsNY2YJfWTuUhSF5iL\nJHWBuUjSRJbsCVRVFyc5L8ndqupMYH/g++3fwcBr2v9HrWik64T9c6TJmIskdYG5SFIXmIskTWrJ\nIlDrL4GPJNkSOBt4Js0ook8mOQQ4FzhwZUKUpBuZiyR1gblIUheYiySNbaQiUFWdCmyY56r9pxuO\nJC3MXCSpC8xFkrrAXCRpEqP0BJIkSZIkSdIaZxFIkiRJkiSpBywCSZIkSZIk9YBFIEmSJEmSpB6w\nCCRJkiRJktQDFoEkSZIkSZJ6wCKQJEmSJElSD1gEkiRJkiRJ6oFU1eptLPkZcC6wM3DJqm14dMY1\nui7GBMY1rkniukNV3XYlglkt5qKJGdfouhgTrL+41nQ+MhdNzLjGY1yjMxd17zkB4xqXcY1nPcU1\nUi5a1SLQjRtNTq6qDau+4SUY1+i6GBMY17i6Gtdq6er9N67xdDGuLsYExtVVXb3/xjUe4xpPF+Pq\nYkyrqav337jGY1zj6WNcTgeTJEmSJEnqAYtAkiRJkiRJPTCrItDhM9ruUoxrdF2MCYxrXF2Na7V0\n9f4b13i6GFcXYwLj6qqu3n/jGo9xjaeLcXUxptXU1ftvXOMxrvH0Lq6Z9ASSJEmSJEnS6nI6mCRJ\nkiRJUg+sahEoyaOTnJnkrCQvW81tD8XxviQbk3xv4LKdkhyX5Eft/x1nENftk3w5yfeTnJ7khV2I\nLcnWSU5K8p02rn9oL79jkhPb5/MTSbZczbgG4tssySlJjulKXEnOSfLdJKcmObm9rAuvsR2SHJnk\nB0nOSPKgLsS12rqSi9pYOpePzEUTx2cuGj0ucxHmohFiMhdNFp+5aPS4zEWtruQjc9FYcZmLxo/J\nXMQqFoGSbAa8DXgMcE/gKUnuuVrbH3IE8Oihy14GHF9VdwGOb8+vtuuAl1TVPYEHAs9vH6NZx3Y1\n8PCqui+wN/DoJA8EXgu8oaruDFwGHLLKcc15IXDGwPmuxPUHVbX3wE/7zfp5BHgT8MWqujtwX5rH\nrQtxrZqO5SLoZj4yF03GXDQ6c5G5aBTmosmYi0bX+1wEnctHR2AuGpW5aDLmoqpalT/gQcCxA+df\nDrx8tbY/Tzx7Ad8bOH8msGt7elfgzFnFNhDTUcAjuxQbsA3wX8C+wCXA5vM9v6sYzx7tm+LhwDFA\nOhLXOcDOQ5fN9HkEtgd+QtsLrCtxzeC56VQuamPodD4yF40Uj7lo9JjMRfO8JsxFI8VnLlo6HnPR\n6DGZi266z53KR+aiiWIyF40Wl7moalWng+0OnDdw/vz2sq7Ypaouak9fDOwyy2CS7AXcDziRDsTW\nDuc7FdgIHAf8GLi8qq5rF5nV8/lG4G+AG9rzt+lIXAV8Kcm3kxzaXjbr5/GOwM+A97dDM9+TZNsO\nxLXaup6LoEPPibloZOai0ZmLGuaiMZiLRmYuGp256CZdz0edeU7MRSMzF41u1XORjaHnUU25bWY/\nm5bkVsCngRdV1S8Hr5tVbFV1fVXtTVPV3Qe4+2rHMCzJ44CNVfXtWccyj4dU1f1phtU+P8nDBq+c\n0fO4OXB/4B1VdT/gKoaGFc76ta+bm+VzYi4ajblobOaiNchctClz0djMRZoKc9GmzEVjMxexukWg\nC4DbD5zfo72sK36aZFeA9v/GWQSRZAua5PKRqvpMl2IDqKrLgS/TDOHbIcnm7VWzeD4fDPxxknOA\nj9MMN3xTB+Kiqi5o/28EPkuTlGf9PJ4PnF9VJ7bnj6RJOLOOa7V1PRdBB54Tc9FYzEXjMRc1zEUj\nMBeNxVw0HnPRTbqej2b+nJiLxmIuGs+q56LVLAJ9C7hLmq7gWwJPBo5exe0v5Wjg4Pb0wTRzPVdV\nkgDvBc6oqn/rSmxJbptkh/b0LWnmwJ5Bk2ieOKu4qurlVbVHVe1F83r6P1V10KzjSrJtklvPnQb+\nEPgeM34eq+pi4Lwkd2sv2h/4/qzjmoGu5yKY/XveXDQGc9F4zEU3MhctwVw0HnPReMxFm+h6Ppr1\ne95cNAZz0XhmkouGmwSt5B/wWOCHNHMV/3Y1tz0Ux8eAi4BraSpvh9DMUzwe+BHwH8BOM4jrITTD\nvE4DTm3/Hjvr2ID7AKe0cX0P+Pv28jsBJwFnAZ8Ctprhc7ofcEwX4mq3/5327/S51/qsn8c2hr2B\nk9vn8nPAjl2IawaPQydyURtL5/KRuWhZMZqLRovNXFTmohFiMhdNHqO5aLTYzEU3PRadyEfmorHi\nMheNF4u5qP1Lu1FJkiRJkiStYzaGliRJkiRJ6gGLQJIkSZIkST1gEUiSJEmSJKkHLAJJkiRJkiT1\ngEUgSZIkSZKkHrAIJEmSJEmS1AMWgSRJkiRJknrAIpAkSZIkSVIP/D+V44H798RdgAAAAABJRU5E\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2ede75278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "idx = 474\n",
    "f, ax = plt.subplots(ncols=len(metrics_sae_loss_inf)+1, figsize=(20,5))\n",
    "for i, (model, v) in enumerate(inference_sae_loss.items()):\n",
    "    ax[i].imshow(v[2][idx])\n",
    "    ax[i].set_title('%s\\nMean : %.2f' % (model, metrics_sae_loss_inf[model][0].mean()))\n",
    "ax[3].imshow(v[1][idx].reshape((64,64)))\n",
    "ax[3].set_title('Ground Truth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:25:34.544650Z",
     "start_time": "2017-12-02T12:25:34.540590Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['customized_loss + MSE', 'MSE + MSE', 'kullback_leibler_divergence + MSE'])"
      ]
     },
     "execution_count": 194,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inference_sae_loss.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-12-02T12:28:17.267975Z",
     "start_time": "2017-12-02T12:28:17.070654Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n5557LvaRRx5RtClJkiDLsmYise6YO3duM4DmYOfr6+t1r776atwDDzxQCwBpaWmeTz/99Giw8r1l\nxYoVR88991zHP/7xj+h77rln4NatW48c/1M/H73tRy6hnCSGOBz468GDiGMMPgDozpJhmitB6Mn3\nuxEQ9Grj3VvsBgPuyc1VjPi812rhqhVgmiPjqStq8eSFtcevBIBHEOAWBQACCuuteOjTDDjQb4LU\nTk+EnyedLOSeJ8maNGmSfe/evZb8/HzjhRdeOGT06NH2vLy8kA0bNhzZt2+f+bHHHkt0u91Camqq\na9WqVUXh4eHS+++/H3bvvfcmWywWafz48UoQA83hXVpaqr/xxhtTS0pKTACwbNmy4n/84x/xpaWl\npqysrOzzzjuv5a677qq59NJLM48cObLf4XAI8+bNS927d69Vp9Ph6aefLp01a1br0qVLo9evXx/R\n3t4ulpSUmC666KKml156KXjwCIBzzz23benSpcpMYM2aNWHd3cfq1avDH3jggYFWq1UaN26cvbi4\n2PTVV18V3HXXXYmhoaG+xx57rBoAMjMzc9avX39k6NChyjd/c3OzOHPmzIzm5mad1+sVHn744Yrr\nr7++qbt+HDJkSI8iTrmEchIY4nDghcOHke5wINTnU/8b64PldgliNCBYe/BPD1TuNOKKL4efkPEO\nEDDiO0NCYJRlmNbJwEoAnh62wwoYLTJCTRJCTT6MTGzFv359EDHW4DMozumPx+PBZ599Fpabm9sO\nACUlJabFixfXFhQU7LfZbNITTzyR8O233x4+cODAwTFjxjgef/zxeIfDISxevDht7dq1Bfv27TtY\nU1PT7Y4PCxcuTJk8eXJrfn7+gf379x8YM2aM87nnnitLTk52HTp06MDLL7+sMsJ/+9vf4gRBwOHD\nhw+8/fbbR2+99dY0h8MhAMCBAwesH3300dGDBw/uX7t2bWRBQYHmLhPr1q0Lu+iii5oAoLKyUh/s\nPv7whz+kfvLJJ0f2799/sL6+vld/oFarVfr4448LDhw4cPCbb745/Oc//3lgYEZL+7GnxhvgI/Cf\nTMB4R/h82BIVhSczM+HrmAZPzqjHAxcegU4EVn4/AO/+0FXqa2MkA73RjHopMJU/boI3TewGA27O\nyEBox0vSeqAVpr9KMHTMzuh0XadXT9nOkSQsKSqCUQbWpsRiyMI2ZMU58OxFu3DPJ2NQ5zCDcwro\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2b768b940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from skimage import measure\n",
    "# Find contours at a constant value of 0.8\n",
    "contours_truth = measure.find_contours(v[1][idx].reshape((64,64)), 0.8)\n",
    "contours_simple = measure.find_contours(inference_sae_loss['customized_loss + MSE'][2][idx], 0.8)\n",
    "contours_mse = measure.find_contours(inference_sae_loss['MSE + MSE'][2][idx], 0.8)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.imshow(v[0][idx].reshape((64,64)), cmap='gray')\n",
    "\n",
    "for n, contour in enumerate(contours_truth):\n",
    "    ax.plot(contour[:, 1], contour[:, 0], linewidth=2, color='green', label='Ground Truth')\n",
    "for n, contour in enumerate(contours_simple[:1]):\n",
    "    ax.plot(contour[:, 1], contour[:, 0], linewidth=2, color='red', label='Prediction Regular')\n",
    "for n, contour in enumerate(contours_mse[:1]):\n",
    "    ax.plot(contour[:, 1], contour[:, 0], linewidth=2, color='orange', label='Prediction All MSE')\n",
    "    \n",
    "ax.axis('image')\n",
    "ax.set_xticks([])\n",
    "ax.set_yticks([])\n",
    "plt.legend(bbox_to_anchor=(1,1))\n",
    "plt.savefig('./Rapport/images/image_with_contour_truth_pred_SAE.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
